using System;
using System.Collections.Generic;
using System.Text;
using Ghasam.Business.Domain.Entity;

namespace Ghasam.Business.Services
{
    public interface IInternalAccountingService
    {
        int GetCount();

        IList<InternalAccount> GetAccounts();

        IList<Item> GetItems();

        Item GetItem(int itemId);

        IList<Item> FindItemByNameLike(string name);

        Item FindItemByName(string name);

        void PersistItem(Item item);

        InternalAccount GetAccount(int accountId);

        IList<InternalAccounting> GetAll(int pageSize, int pageNumber);

        IList<InternalAccounting> Find(int pageSize, int pageNumber, InternalAccounting example, DateTime? StartDate, DateTime? EndDate);
        
        int CountFind(InternalAccounting example, DateTime? StartDate, DateTime? EndDate);

        InternalAccountingType GetInternalAccountingType(int accountingType);

        IList<InternalAccountingType> GetInternalAccountingTypes();

        void NewInternalAccounting(InternalAccounting accounting);

        void NewInternalAccount(InternalAccount internalAccount);

        void DeleteInternalAccounting(InternalAccounting accounting);

        void DeleteInternalAccounting(int accountingId);

        IList<InternalAccounting> InternalAccountingReport(Item item, SalesPerson salesPerson, InternalAccount account, DateTime? accountingStartDate, DateTime? accountingEndDate, int[] formal);

        IList<InternalAccounting> SortInternalAccounting(int pageSize, int pageNumber, InternalAccounting example, DateTime? StartDate, DateTime? EndDate, string param, bool asc);

        InternalAccounting GetInternalAccounting(int id);
    }
}
